package daosimp;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import util1.HibernateUtil;
import modelo.Curso;
import modelo.Cursoperiodo;
import modelo.Pregunta;
import modelo.Profesor;
import daos.PreguntaDAO;

public class PreguntaDAOIMP implements PreguntaDAO{

	private Transaction tx;
	
	@Override
	public List<Pregunta> obtenerPreguntasxProfesor(Profesor profesor) {
		List<Pregunta> preguntas = new ArrayList<Pregunta>();
		try{
			tx = HibernateUtil.session.beginTransaction();
			String hql = "FROM Pregunta where idProfesorRedactor= '"+profesor.getIdProfesor()+"'";
			Query query = HibernateUtil.session.createQuery(hql);
			if (!query.list().isEmpty()){
				preguntas = query.list();
			}
			tx.commit();
		} catch(Exception ex) {
			tx.rollback();
		} 
		return preguntas;
	}

	@Override
	public List<Pregunta> obtenerPreguntasxCurso(Cursoperiodo cursoPeriodo) {
return null;
	}

	@Override
	public void registrarPregunta(Pregunta pregunta){
		try{
			tx = HibernateUtil.session.beginTransaction();
			HibernateUtil.session.save(pregunta);
			tx.commit();
		} catch (Exception ex){
			tx.rollback();
			throw ex;
		} 
	}

	@Override
	public void modidicarPregunta(Pregunta pregunta) throws Exception{
		try{
			tx = HibernateUtil.session.beginTransaction();
			HibernateUtil.session.update(pregunta);
			tx.commit();
		} catch (Exception ex){
			tx.rollback();
			throw ex;
		} 
	}

	@Override
	public void eliminarPegunta(Pregunta pregunta) throws Exception{
		try{
			tx = HibernateUtil.session.beginTransaction();
			HibernateUtil.session.delete(pregunta);
			tx.commit();
		} catch (Exception ex){
			tx.rollback();
			throw ex;
		} 
		
	}

	@Override
	public List<Pregunta> listarTotalPreguntas() {
		List<Pregunta> preguntas = new ArrayList<Pregunta>();
		try{
			tx = HibernateUtil.session.beginTransaction();
			String hql = "FROM Pregunta";
			Query query = HibernateUtil.session.createQuery(hql);
			if (!query.list().isEmpty()){
				preguntas = query.list();
			}
			tx.commit();
		} catch(Exception ex) {
			tx.rollback();
		} 
		return preguntas;
	}

	@Override
	public List<Pregunta> obtenerPreguntasxDificultad(int nivelDificultad,
			Cursoperiodo cursoPeriodo) {
		// TODO Auto-generated method stub
		return null;
	}

}
